The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for improving firmware storage and maintenance.
Current servers comprise numerous subsystems, with many of those subsystems using stored code such as firmware, microcode, or the like. Typically, each subsystem has its own storage component (e.g., a Flash memory component) for its corresponding firmware, microcode, or the like. Having an independent storage component may also be true for expansion or add-on devices, such as adapter cards, which may also be known as mezzanine cards or expansion cards.
For example, a server may have one Flash memory component to hold the primary firmware for the data processing system. The contents of this primary firmware may include Platform Initialization (PI) code, Unified Extensible Firmware Interface (UEFI) code, Basic Input Output System (BIOS) code, or the like. The server may also have a network controller with its own Flash memory component containing firmware code. Firmware is simply considered as a collection of applicable code or codes. The server may also have a disk controller with its associated Flash memory component for firmware storage.
This arrangement of subsystems each with individual Flash memory components is costly in component costs, board area costs, and a need to separately maintain the contents of each of the Flash memory components present within the data processing system. The component costs and board costs represent an initial fixed cost increasing the overall cost of the server. The additional hardware devices also contribute to the likelihood of a hardware failure (mean time between failures (MTBF) calculations), thus raising the initial cost of the server and impacting future warranty costs. The maintenance of the contents of the Flash memory components represents an initial cost to create the management software(s). There is also the cost of upkeep of the various management software(s). Finally, there is the cost incurred by the customer to have trained personnel to operate the management software(s), the overall time consumed during the maintenance (e.g. update) actions, and the cost of the loss of use of the server during at least parts of the maintenance action. Furthermore, with multiple firmware images existing within the individual Flash memory components each identified by their own versioning means, the server is never at a single known code level. Rather, the server is at a collection of various code levels, resulting in complicated maintenance and updating of the server.